home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DOpus Plus
/
DOpus Plus.iso
/
Tutorial
/
C Guide
/
Simple_Module2
/
includes
/
Window.h
< prev
Wrap
C/C++ Source or Header
|
1998-08-26
|
3KB
|
134 lines
/*******************************************************************
Window.h
Does open a DOpus window with an "Okay" and "Cancel" button,
a localized cycle gadget and a textgadget for doing some
output (it's getting later harder...).
*********************************************************************/
// our standard include, but we must think about later and so I do
// simple trick...
#ifdef PARENT
#include "/includes/Project.h"
#else
#include "includes/Project.h"
#endif
// we need also some other defines from these ->
#include <libraries/gadtools.h>
#include <intuition/gadgetclass.h>
// let's make again an useful define for us
#define GET_ID(a) (((struct Gadget *)(a->IAddress))->GadgetID)
/********************************************************************/
// now we have to declare what we want to have
// we start with making some ID's
enum
{
GADGET_ID_CYCLE,
GADGET_ID_TEXT,
GADGET_ID_OKAY,
GADGET_ID_CANCEL
};
// Our cycle gadget should be localized and so we have to declare
// an array with all ID's from our catalog description.
// It must end with NULL !
USHORT labels[] = { { MSG_CLICK_ME }, { MSG_DO_AGAIN },
{ MSG_NICE_EHH }, NULL };
// We must pass some Tags as well to our gadgets
// here only for the cycle needed
struct TagItem cycle_tags[] =
{
GTCustom_LocaleLabels, (ULONG) &labels[0], // set our locale labels
TAG_DONE
};
// Now we have to define the objects to be added to the window
ObjectDef odef[] =
{
{
OD_GADGET, CYCLE_KIND, // what and what kind
{ 1, 1, 10, 1 }, // char dimensions
{ 0, 0, 20, 4 }, // "fine tuning"
MSG_CYCLE_GAD, // title for the gadget (only an ID)
PLACETEXT_BELOW, // flags
GADGET_ID_CYCLE, // ID code for this gadget
&cycle_tags[0] // pointer to additional tags
},
{
OD_GADGET, TEXT_KIND,
{ 11, 1, SIZE_MAX_LESS-1, 1 },
{ 20, 0, 0, 4 },
NULL,
NULL,
GADGET_ID_TEXT,
NULL
},
{
OD_GADGET, BUTTON_KIND,
{ 1, POS_RIGHT_JUSTIFY-1, 8, 1 },
{ 0, 0, 0, 4 },
MSG_OKAY,
PLACETEXT_IN | BUTTONFLAG_OKAY_BUTTON,
GADGET_ID_OKAY,
NULL
},
{
OD_GADGET, BUTTON_KIND,
{ POS_RIGHT_JUSTIFY-1, POS_RIGHT_JUSTIFY-1, 8, 1 },
{ 0, 0, 0, 4 },
MSG_CANCEL,
PLACETEXT_IN | BUTTONFLAG_CANCEL_BUTTON,
GADGET_ID_CANCEL,
NULL
},
{ OD_END }
};
// It's high time to define the window (means the size)
ConfigWindow cfgwin =
{
{
POS_CENTER, POS_CENTER, // center window (left and top)
40, 8 // window size in char dimensions
},
{ 0, 0, 0, 0 } // we do here no "fine tuning"...
};
/********************************************************************/
// now we define a structure, which makes our life easier
typedef struct _WindowHandle
{
struct Screen *screen;
struct Window *win;
ObjectList *olist;
struct IntuiMessage *imsg;
ULONG signals;
APTR notify_handle;
struct MsgPort *notify_port;
DOpusNotify *notify_msg;
FuncArgs *fargs;
char buffer[32];
ULONG result;
} WindowHandle;
/********************************************************************/
// prototype for our function, which may be exported
void OwnWindow( STRPTR args, struct Screen *screen );